/*
Auteur        :Valentijn Polder
Studentnummer :0782531

$Log$

*/
#include <mod/include/DAC.h>
#include <mod/include/SPI.h>

int DAC_Init(void){
   p_pPIO->PIO_OER  = 0x000C0000;                        //Enable als output
   p_pPIO->PIO_CODR = 0x000C0000;                        //clear beide lijnen
   p_pPIO->PIO_SODR = 0x00040000;                        //Zet de clear lijn hoog
   return(SPI_Init(0,1,0,16,5));                         //Initialiseer SPI met select pin 0, Polarity met standaard hoog, Data verstuurt leading edging lees following edge, 8bit's, divide mckdoor 5 voor clockspeed
}

void DAC_A(unsigned int Data){
   p_pPIO->PIO_SODR = 0x00080000;                        //Zet de load lijn hoog
   SPI_Write(0,((0x0FFF&Data)|0x0000),1);                  //Schrijf Data naar dac met adress
   while(!(p_pSPI->SPI_SR&0x200));                       //check of er data verstuurt kan worden
   p_pPIO->PIO_CODR = 0x00080000;                        //Zet de load lijn laag
}

void DAC_B(unsigned int Data){
   SPI_Write(0,((0x0FFF&Data)|0x4000),1);                  //Schrijf Data naar dac met adress
}

void DAC_C(unsigned int Data){
   SPI_Write(0,((0x0FFF&Data)|0x8000),1);                  //Schrijf Data naar dac met adress
}

void DAC_D(unsigned int Data){
   SPI_Write(0,((0x0FFF&Data)|0xC000),1);                  //Schrijf Data naar dac met adress
}

void DAC_Stop(void){
   p_pPIO->PIO_CODR = 0x000C0000;                        //clear beide lijnen
   p_pPIO->PIO_CODR = 0x000C0000;                        //Maak lijnen input
}
